Home automation and control systems are used to control the behavior of an environment such as a home or office building. Home automation and control systems create and launch “scenes,” involving multiple controlled devices. A scene is a collection of devices, such as lighting, heating and air conditioning, landscape sprinklers, window treatments, audio/visual equipment, water heaters, humidifiers, etc., set in a specific state. For example, one scene could be created where certain lights are set at specified levels, where the thermostat is set at a specified level, and where a stereo unit is activated and set to a particular station. This setting of devices constitutes one scene, and may be triggered by a trigger event also defined by the user, such as the press of a button on a remote control. A different scene may set additional devices and some or all of the members of the one scene to the same or different states. Current home automation and control systems use automation and control protocols to create these scenes, and some of these automation and control protocols are subscriber-requester based.
In a subscriber-requester based protocol, also called a subscriber-publisher based protocol, the system consists of device resources made up of “objects” that interoperate with each other depending on their roles. The subscriber role, also called the member role, provides a way for a device resource to be affected by other device resources. The requester role, also called the publisher role, provides a way for a device to affect other devices. In normal operation, requester objects from one device resource send commands to associated subscriber objects in other devices. Currently the role an object can perform is predetermined and cannot be dynamically changed. When multiple requester objects influence the same subscriber object(s), the requester objects may need to know what demands the other requester objects that share the same binding are making. Currently automation and control subscriber-requester based protocols solve this problem using several methods, each of which has significant drawbacks.
One method is to have the requester object get information about what other requester objects are demanding from the subscriber object in the same device. This method is only effective if the device has both roles which may not be so. Another method is to create listener role objects that act like subscribers in that they can receive instructions from requester objects but unlike subscriber objects a listener role object does not respond to the requester demand, or to create redundant and inactive subscriber role objects. Creating these additional objects takes up additional memory and processing resources, which is undesirable in applications employing small and relatively inexpensive devices.
Therefore, in light of the above, there is a need for a subscriber-requester based automation and control system protocol that allows dynamic object role selection while minimizing the number of needed resource objects.